Micron Document
____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|


The NomadNet German Wikipedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

πŸ” Search

Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―

Pattern Matching
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Pattern Matching (englisch fΓΌr Musterabgleich) oder musterbasierte Suche ist ein Begriff fΓΌr symbolverarbeitende Verfahren, die anhand eines vorgegebenen Musters diskrete Strukturen oder Teilmengen einer diskreten Struktur identifizieren.

Das Pattern Matching ist beispielsweise eine Methode der phylogenetischen Analyse in der Bioinformatik.

Contents

β€’ Grundlagen
β€’ Siehe auch
β€’ Literatur

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Grundlagen

Eine diskrete Struktur besteht aus diskreten Elementen (Symbolen) und Beziehungen zwischen diesen. Beispiele sind Zeichenketten, aber auch BΓ€ume oder Graphen. Das Suchmuster selbst ist ebenfalls eine diskrete Struktur, die aber durch Verwendung zusΓ€tzlicher Metazeichen eine ganze Klasse von Strukturen beschreiben kann. Im Gegensatz zur Mustererkennung, die kontinuierliche Strukturen interpretiert, operiert das Pattern Matching von vornherein auf einer symbolischen ReprΓ€sentation.

Das Pattern Matching spielt jedoch nicht nur bei der Suche, sondern auch bei der muster- und regelbasierten Transformation diskreter Strukturen eine zentrale Rolle. In Ersetzungs- oder Transformationssystemen bildet das Pattern Matching den ersten Schritt. Dabei werden Teile des Musters mit Teilen der analysierten Struktur identifiziert. Die gefundenen Teil-Strukturen gehen dann als Parameter in die Transformationsfunktion ein. Beispiele fΓΌr solche Transformationen sind Textersetzung in Zeichenketten und Graphersetzungssysteme.

Anwendungsgebiete

Programmierung

In einigen funktionalen oder logischen Programmiersprachen wird Pattern Matching genutzt, um Daten anhand ihrer Struktur zu verarbeiten (z. B.: Scala, Objective CAML, ML, Haskell, Erlang, Opal, Python).

Beispiel Fallunterscheidung: Eine mΓΆgliche Definition der n-ten Fibonaccizahl ist:

fib ( n ) = { 0 wenn n = 0 1 wenn n = 1 fib ( n βˆ’ βˆ’ 1 ) + fib ( n βˆ’ βˆ’ 2 ) sonst {\displaystyle {\text{fib}}(n)={\begin{cases}0&{\text{wenn }}n=0\\1&{\text{wenn }}n=1\\{\text{fib}}(n-1)+{\text{fib}}(n-2)&{\text{sonst}}\end{cases}}}

Diese Definition kann so mithilfe von Pattern Matching direkt nach Haskell ΓΌbertragen werden.

-- Matcht die ersten beiden FΓ€lle
fib 0 = 0
fib 1 = 1
-- Alle anderen Zahlen n sind definiert als
fib n = fib(n-1) + fib(n-2)

Beispiel: In Haskell werden die Argumente in einer Funktionsdefinition mit Pattern gematcht. Ein Pattern kann, muss aber nicht, wie im vorherigen Beispiel, ein elementarer Wert (zum Beispiel 0) sein, sondern kann auch einen Daten-Konstruktor beschreiben.

-- matcht die leere Liste (Konstruktor [])
f [] = ...
-- matcht alle Listen der LΓ€nge > 0 (KonstruktorΒ :), wobei x den Kopf und xs den Listenrest enthΓ€lt
f (x:xs) = ...

Das Γ€quivalente Beispiel in der Syntax von Python (ab Version 3.10):cite-ref-1[1]

match n:
case (): ...
case (x, *xs): ...

Textverarbeitung

β†’

Hauptartikel

:

String-Matching-Algorithmus

Pattern Matching wird auch verwendet, um Text zu bearbeiten. In Programmiersprachen wie Perl oder awk und auch in den meisten Texteditoren existieren Werkzeuge, um einen Text nach einem Muster zu durchsuchen. Die Muster bestehen aus regulΓ€ren AusdrΓΌcken.

Siehe auch
Literatur

β€’ Simon Peyton Jones (Hrsg.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003, ISBN 0-521-82614-4 (englisch, haskell.org – Abschnitt 3.17, HTML-Version).
β€’ Richard Bird: Introduction to Functional Programming using Haskell. 2. Auflage. Prentice Hall Europe, 1998, ISBN 0-13-484346-0 (englisch).

Einzelnachweise

cite-note-11. ↑ Daniel F. Moisset: PEP 636 – Structural Pattern Matching: Tutorial. In: python.org. 12. September 2020, abgerufen am 28. Juni 2022 (englisch).